package model

import (
	"time"
)

// Location 地理位置
type Location struct {
	Id        uint      `gorm:"primaryKey;autoIncrement" json:"id"`
	Lat       float64   `gorm:"type:decimal(10,8);not null" json:"lat"` // 纬度
	Lng       float64   `gorm:"type:decimal(11,8);not null" json:"lng"` // 经度
	CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"`
	UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"`
}

func (l *Location) TableName() string {
	return "location"
}

// RouteStep 路线步骤
type RouteStep struct {
	Id              uint      `gorm:"primaryKey;autoIncrement" json:"id"`
	RouteResponseID uint      `gorm:"not null;index" json:"route_response_id"` // 明确指定外键字段名
	Distance        int       `gorm:"not null" json:"distance"`                // 路段距离（米）
	Duration        int       `gorm:"not null" json:"duration"`                // 路段耗时（秒）
	Instruction     string    `gorm:"type:text;not null" json:"instruction"`   // 路线指示
	Path            string    `gorm:"type:text" json:"path"`                   // 路段坐标点
	CreatedAt       time.Time `gorm:"autoCreateTime" json:"created_at"`
	UpdatedAt       time.Time `gorm:"autoUpdateTime" json:"updated_at"`
}

func (rs *RouteStep) TableName() string {
	return "route_step"
}

// RouteResponse 路线响应
type RouteResponse struct {
	Id                  uint         `gorm:"primaryKey;autoIncrement" json:"id"`
	Distance            int          `gorm:"not null" json:"distance"`                               // 总距离（米）
	Duration            int          `gorm:"not null" json:"duration"`                               // 总耗时（秒）
	Message             string       `gorm:"type:varchar(255)" json:"message"`                       // 提示信息
	OriginLocation      string       `gorm:"type:varchar(100);not null" json:"origin_location"`      // 起点坐标
	DestinationLocation string       `gorm:"type:varchar(100);not null" json:"destination_location"` // 终点坐标
	Steps               []*RouteStep `gorm:"foreignKey:RouteResponseID" json:"steps"`                // 修改为指针切片
	CreatedAt           time.Time    `gorm:"autoCreateTime" json:"created_at"`
	UpdatedAt           time.Time    `gorm:"autoUpdateTime" json:"updated_at"`
}

func (rr *RouteResponse) TableName() string {
	return "route_response"
}

/*// Location 地理位置
type Location struct {
	Lat float64 `json:"lat"` // 纬度
	Lng float64 `json:"lng"` // 经度
}

// RouteStep 路线步骤
type RouteStep struct {
	Distance    int    `json:"distance"`    // 路段距离（米）
	Duration    int    `json:"duration"`    // 路段耗时（秒）
	Instruction string `json:"instruction"` // 路线指示
	Path        string `json:"path"`        // 路段坐标点
}

// RouteResponse 路线响应
type RouteResponse struct {
	Distance            int          `json:"distance"`             // 总距离（米）
	Duration            int          `json:"duration"`             // 总耗时（秒）
	Steps               []*RouteStep `json:"steps"`                // 路线步骤
	Message             string       `json:"message"`              // 提示信息
	OriginLocation      string       `json:"origin_location"`      // 起点坐标
	DestinationLocation string       `json:"destination_location"` // 终点坐标
}
*/
